var store_grid;
var store_departamento;
var store_estado;

Ext.onReady(function()
{

    store_estado = new Ext.data.ArrayStore({
		fields : [ 'Id', 'Estado' ],
		data   : [[0, 'Todos'], [1, 'No Confirmado'], [2, 'Confirmado']]
    });
    
    store_departamento = new X.store.Json({
        fields : [
            'codigoDepartamento',
            'nombreDepartamento'
        ]
    });

    store_grid = new X.store.Json({
        url : '/solicitudpg/ajax-filtro',
        fields : [
            'codigoSolicitud',
            'fechaSolicitud',
            'numeroSolicitud',
            'monto',
            'chequeOrden',
            'concepto',
            'observaciones'
        ]
    });

    var grid = new X.grid.GridPanel({

        id        : 'grid',
        height    : 250,
        width     : 977,
        store     : store_grid,
        
        columns:[
            new X.column.Text  ({header: 'Nro Solicitud', dataIndex: 'numeroSolicitud',width: 90}),
            new X.column.Date  ({header: 'Fecha',         dataIndex: 'fechaSolicitud', width: 80}),
            new X.column.Money ({header: 'Monto',         dataIndex: 'monto',          width: 90}),
            new X.column.Text  ({header: 'Orden de pago', dataIndex: 'chequeOrden',    width: 200}),
            new X.column.Text  ({header: 'Concepto',      dataIndex: 'concepto',       width: 200}),
            new X.column.Text  ({header: 'Justificacion', dataIndex: 'observaciones',  width: 200}),
            new X.column.View     ({ViewUrl  : '/solicitudpg/ver-pdf',
                                   idColumn   : 'codigoSolicitud'
                                  }),
            new X.column.Validate ({customUrl  : '/solicitudpg/ajax-validar',
                                   idColumn   : 'codigoSolicitud',
                                   customMsg:  '¿Está seguro de que desea confirmar la solicitud?'
                                  }),
            {xtype: 'actioncolumn', width: 28, items: [ {
                icon   : '/img/icon_editar.png',
                tooltip: 'Editar',
                handler : function(grid, rowIndex, colIndex)
                {
                    var rec = grid.getStore().getAt(rowIndex)
                    Ext.Ajax.request({
                            url     : '/solicitudpg/ajax-canedit',
                            method  : 'POST',
                            params  : { id : rec.get('codigoSolicitud') },
                            success : function (result, request){
                                 var obj = Ext.util.JSON.decode(result.responseText);
                                 if (obj.success){
                                    window.location = '/solicitudpg/editar?id=' + rec.get('codigoSolicitud');
                                 }
                                 else{
                                     Ext.Msg.show({msg:obj.msg,icon: Ext.Msg.ERROR, buttons:Ext.Msg.OK});
                                 }

                            },
                            failure : function (result, request){
                                Ext.Msg.show({msg:'Error',icon: Ext.Msg.ERROR, buttons:Ext.Msg.OK});
                            }
                    })
                }
            }]},
            new X.column.Delete  ({deleteUrl  : '/solicitudpg/ajax-eliminar',
                                 idColumn   : 'codigoSolicitud',
                                 msgName    : 'la solicitud con numero',
                                 msgNameCol : 'numeroSolicitud'})
        ]
    });

    grid.getBottomToolbar().pageSize = 9;

    new X.form.FormPanel({

        title            : 'Validar/Rechazar Ordenes de Pago',
        returnButtonText : 'Salir',
        returnUrl        : '/solicitudpg/listar',
        width            : 1040,
        height           : 530,
        labelWidth       : 120,
        layout           : 'absolute',

        items:[
            new Ext.form.FieldSet({title:'Parametros de filtrado', x: 10, y: 5, width: 995, height: 150, layout: 'absolute',items:
            [
                new X.field.Hidden({id:'gridRows'}),
                {layout:'form', x: 40, y: 25, items:[
                    new X.field.Date ({fieldLabel:'Fecha Inicial',id:'filtroInicial', width:230, allowBlank: true, vtype: 'daterange',   endDateField:'filtroFinal'}),
                    new X.field.Date ({fieldLabel:'Fecha Final',  id:'filtroFinal',   width:230, allowBlank: true, vtype: 'daterange', startDateField:'filtroInicial'})
                ]},
               {layout:'form', x: 510, y: 25, items:[
                    new X.field.Combo ({
                            id           : 'filtroDepartamento',
                            hiddenName   : 'codigoDepartamento',
                            fieldLabel   : 'Departamento',
                            valueField   : 'codigoDepartamento',
                            displayField : 'nombreDepartamento',
                            allowBlank   : false,
                            width        : 230,
                            store        : store_departamento
                    }),
                    new X.field.Combo ({
                            id           : 'filtroEstado',
                            hiddenName   : 'Estado',
                            fieldLabel   : 'Estado Solicitud',
                            valueField   : 'Id',
                            displayField : 'Estado',
                            allowBlank   : false,
                            width        : 230,
                            store        : store_estado
                    })
               ]},
               {layout:'form', x: 350, y: 90, items:[
                    new Ext.Button   ({text:'Mostrar Solicitudes', width:230, handler:cargar_grilla})
                ]}
            ]}),
            new Ext.form.FieldSet({title:'Seleccione una solicitud', x: 10, y: 170,items:
            [
                grid
            ]})
        ]
    });

   // ajax para cargar los datos filtrador
    function cargar_grilla(){
        grid.getBottomToolbar().cursor=0;
        grid.getBottomToolbar().doRefresh();
    }
    
    store_grid.addListener('beforeload', function(){
        store_grid.setBaseParam('filtroDepartamento', Ext.getCmp('filtroDepartamento').getValue());
        store_grid.setBaseParam('filtroEstado',       Ext.getCmp('filtroEstado')      .getValue());
        store_grid.setBaseParam('filtroInicial',      Ext.getCmp('filtroInicial')     .getValue());
        store_grid.setBaseParam('filtroFinal',        Ext.getCmp('filtroFinal')       .getValue());
    });

   // validacion de filtroInicial y filtroFinal

    Ext.apply(Ext.form.VTypes, {
        daterangeText : 'Formato incorrecto',
        daterange     : function(val, field) {
            var date = field.parseDate(val);

            if(!date){
                return false;
            }
            if (field.startDateField) {
                var start = Ext.getCmp(field.startDateField);
                if (!start.maxValue || (date.getTime() != start.maxValue.getTime())) {
                    start.setMaxValue(date);
                    start.validate();
                }
            }
            else if (field.endDateField) {
                var end = Ext.getCmp(field.endDateField);
                if (!end.minValue || (date.getTime() != end.minValue.getTime())) {
                    end.setMinValue(date);
                    end.validate();
                }
            }
            return true;
        }
    });

});
